package com.javaweb.web.dao.ds1;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;

import com.javaweb.base.po.Module;
import com.javaweb.base.po.Role;
import com.javaweb.base.po.User;
import com.javaweb.db.mybatis.api.DaoWapper;
import com.javaweb.web.eo.module.ModuleIdAndNameResponse;
import com.javaweb.web.eo.module.ModuleListRequest;
import com.javaweb.web.eo.module.ModuleListResponse;

/**
 * 模块模块数据库层接口
 * @author tank2140896
 */
@Mapper
public interface ModuleDao extends DaoWapper<Module> {
	
	/**
	 * 根据模块ID获取模块信息数据库层接口
	 * @param list 模块ID列表
	 * @return List<Module> 模块信息列表
	 */
	List<Module> getModuleByModuleId(List<String> list);
	
	/**
	 * 获取模块列表数据库层接口
	 * @param moduleListRequest 模块列表请求参数
	 * @return List<ModuleListResponse> 模块信息列表
	 */
	List<ModuleListResponse> moduleList(ModuleListRequest moduleListRequest);
	
	/**
	 * 获取模块列表总数数据库层接口
	 * @param moduleListRequest 模块列表请求参数
	 * @return Long 总条数
	 */
	Long moduleListCount(ModuleListRequest moduleListRequest);
	
	/**
	 * 模块删除数据库层接口
	 * @param moduleId 模块ID
	 */
	void moduleDelete(String moduleId);
	
	/**
	 * 模块详情数据库层接口
	 * @param moduleId 模块ID
	 * @return Module 模块信息
	 */
	Module moduleDetail(String moduleId);
	
	/**
	 * 获取模块ID和名称列表数据库层接口
	 * @param map 获取模块ID和名称列表请求参数
	 * @return List<ModuleIdAndNameResponse> 模块信息列表
	 */
	List<ModuleIdAndNameResponse> getModuleIdAndNameList(Map<String,String> map);
	
	/**
	 * 根据模块ID获取角色信息列表数据库层接口
	 * @param moduleId 模块ID
	 * @return List<Role> 角色信息列表
	 */
	List<Role> getAllRoleByModuleId(String moduleId);
	
	/**
	 * 根据模块ID获取用户信息列表数据库层接口
	 * @param moduleId 模块ID
	 * @return List<User> 用户信息列表
	 */
	List<User> getAllUserByModuleId(String moduleId);
	
	void setModuleParentIdNull(Module module);
	
	/**
	 * 根据上级模块ID获取模块信息列表数据库层接口
	 * @param parentId 上级模块ID
	 * @return List<Module> 模块信息列表
	 */
	List<Module> getModuleByParentId(String parentId);
	
	/**
	 * 获取序号数据库层接口
	 * @param map 获取序号请求参数
	 * @return Long 序号
	 */
	Long getOrders(Map<String,Object> map);
	
}
